function isValidIDNumber(str){
    //let regexp = /\d{6}\d{6,8}\d{3}[\dxX]?/;
    let regexp = /^(\d{6})(19|20)\d{2}((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}(\d|X)$/;
    return regexp.test(str);
}
const id1 = "111111222222223334";
const id2 = "11010119900307123x";
const id3 = "110101199003071234";
const id4 = "110101900307123";
console.log(isValidIDNumber(id1)); // true
console.log(isValidIDNumber(id2)); // true
console.log(isValidIDNumber(id3)); // true
console.log(isValidIDNumber(id4)); // false


/**
 * 15
 * 6+6+3
 * 前6位是行政地区编码
 * 6位 年月日 820903
 * 3位的顺序码 男是奇数 女是偶数  1男性 001 003 第一个女性 002
 * 没有校验码
 * 
 * 18
 * 6+8+3+1
 * 前6位是行政地区编码
 * 8位 年月日 19820903
 * 3位的顺序码
 * 最一位是校验码 是根据前17位计算出来的
 */